#pragma once
#include <type_traits>
#include <stdint.h>
#include "../Utils/PlatTypeUtil.h"

class UMask
{
public:
	UMask();
	UMask(uint64 uuid);
	UMask(const UMask& other);

	~UMask() = default;
	operator uint64() { return mMask; }
	operator const uint64() const { return mMask; }

private:
	uint64 mMask;
};

namespace std
{
	template <>
	struct hash<UMask>
	{
		std::size_t operator()(const UMask& mask) const
		{
			return hash<uint64>()((uint64)mask);
		}
	};

}